package model

import (
	"time"
)

// WkbCustomerService 客服表
type WkbCustomerService struct {
	ID                 int       `gorm:"primary_key;column:id;type:int(11);not null" json:"-"`                    // 自增id
	AuthID             int       `gorm:"column:auth_id;type:int(11)" json:"auth_id"`                              // wkb_realname_auth的主键id
	Realname           string    `gorm:"column:realname;type:varchar(30)" json:"realname"`                        // 真实姓名(冗余)
	IsManage           int8      `gorm:"column:is_manage;type:tinyint(2)" json:"is_manage"`                       // 是否管理员:1=是,2=否
	SeeCustomerService int8      `gorm:"column:see_customer_service;type:tinyint(2)" json:"see_customer_service"` // 查看其他客服权限:1=有,2=否
	SeeCustomer        int8      `gorm:"column:see_customer;type:tinyint(2)" json:"see_customer"`                 // 查看用户权限:1=可见管理员,2=可见同技能组,3=所有可见
	Deleted            int8      `gorm:"column:deleted;type:tinyint(2)" json:"deleted"`                           // 是否删除:1=删除,2=否
	UpdatedAt          time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                      // 更新时间
	CreatedAt          time.Time `gorm:"column:created_at;type:timestamp" json:"created_at"`                      // 创建时间
}

// WkbCustomerServiceGroup 客服所在组关系表
type WkbCustomerServiceGroup struct {
	ID         int       `gorm:"primary_key;column:id;type:int(11);not null" json:"-"` // 自增id
	AuthID     int       `gorm:"column:auth_id;type:int(11)" json:"auth_id"`           // wkb_realname_auth的主键id
	CustomerID int       `gorm:"column:customer_id;type:int(11)" json:"customer_id"`   // 对于客服表主键
	GroupID    int       `gorm:"column:group_id;type:int(11)" json:"group_id"`         // 所在技能组id
	Deleted    int8      `gorm:"column:deleted;type:tinyint(4)" json:"deleted"`        // 是否删除:1=是，2=否
	UpdatedAt  time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`   // 更新时间
	CreatedAt  time.Time `gorm:"column:created_at;type:timestamp" json:"created_at"`   // 创建时间
}

// WkbFaeUsers [...]
type WkbFaeUsers struct {
	ID        int       `gorm:"primary_key;column:id;type:int(11);not null" json:"-"`        // 自增id
	Name      string    `gorm:"column:name;type:varchar(50)" json:"name"`                    // 名字
	Avatar    string    `gorm:"column:avatar;type:varchar(255)" json:"avatar"`               // 头像
	Username  string    `gorm:"column:username;type:varchar(50);not null" json:"username"`   // 账号
	Password  string    `gorm:"column:password;type:varchar(50);not null" json:"password"`   // 密码
	StartTime time.Time `gorm:"column:start_time;type:timestamp;not null" json:"start_time"` // 登录时间
}

// WkbGroup 群聊
type WkbGroup struct {
	ID        int       `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`     // id
	GroupID   string    `gorm:"unique;column:group_id;type:varchar(128);not null" json:"group_id"` // 用户雪花ID，采用雪花算法
	Name      string    `gorm:"column:name;type:varchar(255)" json:"name"`                         // 群名称
	State     int8      `gorm:"column:state;type:tinyint(4)" json:"state"`                         // 0初始状态,1进行中,2完成
	Notice    string    `gorm:"column:notice;type:text" json:"notice"`                             // 群公告
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                // 更新时间
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null" json:"created_at"`       // 创建时间
}

// WkbGroupChatMessage 聊天内容
type WkbGroupChatMessage struct {
	ID            int       `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`                    // id
	FromUserID    string    `gorm:"column:from_user_id;type:varchar(64);not null" json:"from_user_id"`                // 发送用户 Id
	ToUserID      string    `gorm:"index:to_user_id;column:to_user_id;type:varchar(64);not null" json:"to_user_id"`   // 目标 Id
	WkbGroup      WkbGroup  `gorm:"association_foreignkey:to_user_id;foreignkey:group_id" json:"wkb_group_list"`      // 群聊
	ObjectName    string    `gorm:"column:object_name;type:varchar(64);not null" json:"object_name"`                  // 消息类型 文本消息 RC:TxtMsg 、 图片消息 RC:ImgMsg 、语音消息 RC:VcMsg 、图文消息 RC:ImgTextMsg 、位置消息 RC:LBSMsg 、添加联系人消息 RC:ContactNtf 、提示条通知消息 RC:InfoNtf 、资料通知消息 RC:ProfileNtf 、通用命令通知消息 RC:CmdNtf
	Content       string    `gorm:"column:content;type:text" json:"content"`                                          // 消息类型
	ChannelType   string    `gorm:"column:channel_type;type:varchar(64);not null" json:"channel_type"`                // 会话类型
	MsgTimestamp  string    `gorm:"column:msg_timestamp;type:varchar(64);not null" json:"msg_timestamp"`              // 服务端收到客户端发送消息时的服务器时间（1970年到现在的毫秒数）
	MsgUId        string    `gorm:"unique;index:idx_msguid;column:msg_uid;type:varchar(128);not null" json:"msg_uid"` // 可通过 msgUID 确定消息唯一
	SensitiveType int8      `gorm:"column:sensitive_type;type:tinyint(4)" json:"sensitive_type"`                      // 消息中是否含有敏感信息，0 为不包含，1 为含有屏蔽敏感词，2 为含有替换敏感词
	Source        string    `gorm:"column:source;type:varchar(64)" json:"source"`                                     // 标识消息的发送源头
	UpdatedAt     time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                               // 更新时间
	CreatedAt     time.Time `gorm:"column:created_at;type:timestamp;not null" json:"created_at"`                      // 创建时间
}

// WkbGroupMember 群组成员
type WkbGroupMember struct {
	ID         uint32    `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`             // id
	GroupID    string    `gorm:"index:group_id;column:group_id;type:varchar(128);not null" json:"group_id"` // 用户雪花ID，采用雪花算法
	WkbGroup   WkbGroup  `gorm:"association_foreignkey:group_id;foreignkey:group_id" json:"wkb_group_list"` // 群聊
	MemberName string    `gorm:"column:member_name;type:varchar(128);not null" json:"member_name"`          // 群成员昵称
	MemberType int8      `gorm:"column:member_type;type:tinyint(4)" json:"member_type"`                     // 成员类型,0用户,1机器人,2管理员,3客服,4FAE
	Avatar     string    `gorm:"column:avatar;type:varchar(512)" json:"avatar"`                             // 头像
	UpdatedAt  time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                        // 更新时间
	CreatedAt  time.Time `gorm:"column:created_at;type:timestamp;not null" json:"created_at"`               // 创建时间
	UserID     uint32    `gorm:"column:user_id;type:int(11) unsigned" json:"user_id"`                       // 用户id
	UserName   string    `gorm:"column:user_name;type:varchar(128)" json:"user_name"`                       // 用户名
}

// WkbRealnameAuth [...]
type WkbRealnameAuth struct {
	ID               int       `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`            // 自增id
	UId              int       `gorm:"column:uid;type:int(11);not null" json:"uid"`                              // 用户id
	Admin            int       `gorm:"column:admin;type:int(11)" json:"admin"`                                   // 管理员id
	InvitationUserID int       `gorm:"column:invitation_user_id;type:int(11)" json:"invitation_user_id"`         // 邀请人用户id
	Username         string    `gorm:"column:username;type:varchar(32)" json:"username"`                         // 用户名
	Realname         string    `gorm:"column:realname;type:varchar(32)" json:"realname"`                         // 用户真实姓名
	Email            string    `gorm:"column:email;type:varchar(200)" json:"email"`                              // 邮箱
	Tel              string    `gorm:"column:tel;type:varchar(200)" json:"tel"`                                  // 电话
	CardNumber       string    `gorm:"column:card_number;type:varchar(255)" json:"card_number"`                  // 用户证件号
	CardFrontSide    string    `gorm:"column:card_front_side;type:varchar(255)" json:"card_front_side"`          // 身份证正面
	CardBackDside    string    `gorm:"column:card_back_dside;type:varchar(255)" json:"card_back_dside"`          // 身份证背面
	ValidationImg    string    `gorm:"column:validation_img;type:varchar(255)" json:"validation_img"`            // 持证验证图片
	BusinessCard     string    `gorm:"column:business_card;type:varchar(255)" json:"business_card"`              // 名片
	District         string    `gorm:"column:district;type:char(1)" json:"district"`                             // 地理区域
	Status           int8      `gorm:"column:status;type:tinyint(4);not null" json:"status"`                     // 认证状态 0：待验证 1：成功 2：失败
	CardType         int8      `gorm:"column:card_type;type:tinyint(4);not null" json:"card_type"`               // 证件类型  1-身份证  2-护照
	Type             int8      `gorm:"column:type;type:tinyint(4);not null" json:"type"`                         // 认证类型  1-身份认证  2-企业认证
	FaeCategoryID    string    `gorm:"column:fae_category_id;type:mediumint(9);not null" json:"fae_category_id"` // fae申请版主应用分类
	Usertype         int8      `gorm:"column:usertype;type:tinyint(4);not null" json:"usertype"`                 // 用户类型
	Reason           string    `gorm:"column:reason;type:varchar(255)" json:"reason"`                            // 审核失败理由
	Resume           string    `gorm:"column:resume;type:varchar(255)" json:"resume"`                            // 简历
	Province         int       `gorm:"column:province;type:int(11);not null" json:"province"`                    // 省
	City             int       `gorm:"column:city;type:int(11);not null" json:"city"`                            // 市
	CompanyAddress   string    `gorm:"column:company_address;type:varchar(255)" json:"company_address"`          // 所在公司
	WorkingYear      string    `gorm:"column:working_year;type:varchar(20)" json:"working_year"`                 // 工作年限
	AuthTime         time.Time `gorm:"column:auth_time;type:timestamp" json:"auth_time"`                         // 认证通过时间
	FailTime         time.Time `gorm:"column:fail_time;type:timestamp" json:"fail_time"`                         // 审核失败时间
	IntegralOne      int       `gorm:"column:integral_one;type:int(11)" json:"integral_one"`                     // FAE认证积分
	IntegralTwo      int       `gorm:"column:integral_two;type:int(11)" json:"integral_two"`                     // 邀请人积分
	RecordText       string    `gorm:"column:record_text;type:text" json:"record_text"`                          // 记录文本
	NoviceVideo      int       `gorm:"column:novice_video;type:int(2)" json:"novice_video"`                      // 新手视频
	Class            int       `gorm:"column:class;type:int(2)" json:"class"`                                    // 分类
	CreatedAt        time.Time `gorm:"column:created_at;type:timestamp" json:"created_at"`                       // 创建时间
	UpdatedAt        time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                       // 更新时间
}

// WkbUserDetail [...]
type WkbUserDetail struct {
	ID                 int       `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`                 // 用户详情编号
	UId                int       `gorm:"unique;column:uid;type:int(11);not null" json:"uid"`                            // 用户编号
	Realname           string    `gorm:"column:realname;type:varchar(32)" json:"realname"`                              // 真实姓名
	RealnameStatus     int8      `gorm:"column:realname_status;type:tinyint(4);not null" json:"realname_status"`        // 表示真实姓名是否公开 0表示不公开 1表示公开
	Sex                int8      `gorm:"column:sex;type:tinyint(4);not null" json:"sex"`                                // 0表示女 1表示男
	Mobile             string    `gorm:"column:mobile;type:varchar(20)" json:"mobile"`                                  // 手机号码
	Email              string    `gorm:"column:email;type:varchar(50)" json:"email"`                                    // 邮箱
	Co                 string    `gorm:"column:co;type:varchar(50)" json:"co"`                                          // 公司
	Address            string    `gorm:"column:address;type:varchar(255)" json:"address"`                               // 收货地址
	WorkYears          int       `gorm:"column:work_years;type:int(11)" json:"work_years"`                              // 工作年限
	MobileStatus       int8      `gorm:"column:mobile_status;type:tinyint(4);not null" json:"mobile_status"`            // 0表示不公开 1表示公开
	Nickname           string    `gorm:"column:nickname;type:varchar(32)" json:"nickname"`                              // app端用户昵称
	WxNickname         string    `gorm:"column:wx_nickname;type:varchar(200)" json:"wx_nickname"`                       // 微信昵称第一时记录的
	Qq                 string    `gorm:"column:qq;type:varchar(20)" json:"qq"`                                          // 用户qq
	QqStatus           int8      `gorm:"column:qq_status;type:tinyint(4);not null" json:"qq_status"`                    // qq是否公开 0表示不公开 1表示公开
	Wechat             string    `gorm:"column:wechat;type:varchar(20)" json:"wechat"`                                  // 用户微信号
	WechatStatus       int8      `gorm:"column:wechat_status;type:tinyint(4);not null" json:"wechat_status"`            // qq是否公开 0表示不公开 1表示公开
	CardNumber         string    `gorm:"column:card_number;type:varchar(32)" json:"card_number"`                        // 身份证号码
	Province           int       `gorm:"column:province;type:int(11)" json:"province"`                                  // 用户省份
	City               int       `gorm:"column:city;type:int(11)" json:"city"`                                          // 用户城市
	Area               int       `gorm:"column:area;type:int(11)" json:"area"`                                          // 用户地区
	Avatar             string    `gorm:"column:avatar;type:varchar(255)" json:"avatar"`                                 // 用户头像
	Autograph          string    `gorm:"column:autograph;type:varchar(255)" json:"autograph"`                           // 个人签名-问答头衔
	Introduce          string    `gorm:"column:introduce;type:varchar(255)" json:"introduce"`                           // 个人简介-问答简介
	AnswerCount        int       `gorm:"column:answer_count;type:int(11);not null" json:"answer_count"`                 // 用户回答总数
	FieldID            string    `gorm:"column:field_id;type:varchar(255)" json:"field_id"`                             // 擅长领域之前是id
	Sign               string    `gorm:"column:sign;type:varchar(255)" json:"sign"`                                     // 个人标签
	ToMeAskMoney       float64   `gorm:"column:to_me_ask_money;type:decimal(8,2);not null" json:"to_me_ask_money"`      // 向我提提问需要支付金额
	IsToMeAsk          int8      `gorm:"column:is_to_me_ask;type:tinyint(4);not null" json:"is_to_me_ask"`              // 是否同意向我追问1是，2否
	IsMinuteListen     int8      `gorm:"column:is_minute_listen;type:tinyint(4);not null" json:"is_minute_listen"`      // 是否规定分钟内可以免费听回答1是，2否
	IsOpenListen       int8      `gorm:"column:is_open_listen;type:tinyint(4);not null" json:"is_open_listen"`          // 开发时,回答超过30天可免费收听1是，2否
	IsModerator        int       `gorm:"column:is_moderator;type:int(11);not null" json:"is_moderator"`                 // 是否版主1是
	EmployeePraiseRate int       `gorm:"column:employee_praise_rate;type:int(11);not null" json:"employee_praise_rate"` // 做为服务商的好评数量
	EmployerPraiseRate int       `gorm:"column:employer_praise_rate;type:int(11);not null" json:"employer_praise_rate"` // 做为雇主的好评数量
	ReceiveTaskNum     int       `gorm:"column:receive_task_num;type:int(11)" json:"receive_task_num"`                  // 承接任务数量
	PublishTaskNum     int       `gorm:"column:publish_task_num;type:int(11)" json:"publish_task_num"`                  // 发布任务数量
	ShopStatus         int8      `gorm:"column:shop_status;type:tinyint(4);not null" json:"shop_status"`                // 店铺状态: -1.管理员禁用店铺 0.未开启店铺 1.开启店铺 2.关闭店铺
	Balance            float64   `gorm:"column:balance;type:decimal(10,2);not null" json:"balance"`                     // 用户资产余额
	BalanceStatus      int8      `gorm:"column:balance_status;type:tinyint(4);not null" json:"balance_status"`          // 资产冻结 0表示未冻结 1表示资金被冻结
	LastLoginTime      time.Time `gorm:"column:last_login_time;type:timestamp" json:"last_login_time"`                  // 最后一次登录时间
	Backgroundurl      string    `gorm:"column:backgroundurl;type:varchar(255)" json:"backgroundurl"`                   // 空间个人资料背景图片
	AlternateTips      int8      `gorm:"column:alternate_tips;type:tinyint(4);not null" json:"alternate_tips"`          // 支付提示 0：提示 1：不提示
	EmployeeNum        int       `gorm:"column:employee_num;type:int(11);not null" json:"employee_num"`                 // 累计雇佣量
	Integral           int       `gorm:"column:integral;type:int(11);not null" json:"integral"`                         // 积分
	ReviveValue        int       `gorm:"column:revive_value;type:int(11);not null" json:"revive_value"`                 // 用户生命值
	AllMoney           float64   `gorm:"column:all_money;type:decimal(8,2);not null" json:"all_money"`                  // 用户总收入
	AskMeMoney         float64   `gorm:"column:ask_me_money;type:decimal(8,2);not null" json:"ask_me_money"`            // 对我提问需要支付金额
	CreatedAt          time.Time `gorm:"column:created_at;type:timestamp" json:"created_at"`                            // 创建时间
	UpdatedAt          time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                            // 更新时间
	RyToken            string    `gorm:"column:ry_token;type:varchar(255)" json:"ry_token"`                             // 融云的token
	ImUserType         int8      `gorm:"column:im_user_type;type:tinyint(4)" json:"im_user_type"`                       // 用户类型:1=普通用户,2=客服
}

// WkbUsers [...]
type WkbUsers struct {
	ID                int       `gorm:"primary_key;column:id;type:int(10) unsigned;not null" json:"-"`           // 用户编号
	UserIDDiy         string    `gorm:"column:user_id_diy;type:varchar(200)" json:"user_id_diy"`                 // 用户自定义id
	SysType           int8      `gorm:"column:sys_type;type:tinyint(4);not null" json:"sys_type"`                // 默认0为本站添加,其它为外部添加
	Name              string    `gorm:"column:name;type:varchar(32)" json:"name"`                                // 用户名
	Mobile            string    `gorm:"column:mobile;type:varchar(11)" json:"mobile"`                            // 新加手机号
	Email             string    `gorm:"unique;column:email;type:varchar(100)" json:"email"`                      // 用户邮箱
	EmailStatus       int8      `gorm:"column:email_status;type:tinyint(4);not null" json:"email_status"`        // 用户邮箱认证状态0：未认证1：待验证2：已经认证
	Password          string    `gorm:"column:password;type:varchar(32)" json:"password"`                        // 用户密码
	AlternatePassword string    `gorm:"column:alternate_password;type:varchar(32)" json:"alternate_password"`    // 支付密码
	Salt              string    `gorm:"column:salt;type:varchar(10)" json:"salt"`                                // 随机码
	Status            int8      `gorm:"column:status;type:tinyint(4)" json:"status"`                             // 账户状态 0：未激活 1：已激活 2：禁用
	UsersType         int8      `gorm:"column:users_type;type:tinyint(4);not null" json:"users_type"`            // 用户类型:1雇主 2威客
	AuthType          string    `gorm:"column:auth_type;type:char(1);not null" json:"auth_type"`                 // 认证类型：1个人 2公司
	Profession        string    `gorm:"column:profession;type:varchar(120);not null" json:"profession"`          // 专业
	GoodAt            string    `gorm:"column:good_at;type:varchar(120);not null" json:"good_at"`                // 擅长
	Abstract          string    `gorm:"column:abstract;type:mediumtext;not null" json:"abstract"`                // 个人简介
	OverdueDate       time.Time `gorm:"column:overdue_date;type:timestamp" json:"overdue_date"`                  // 找回密码邮件过期时间
	ValidationCode    string    `gorm:"column:validation_code;type:varchar(10)" json:"validation_code"`          // 找回密码随机码
	ExpireDate        time.Time `gorm:"column:expire_date;type:timestamp" json:"expire_date"`                    // 重置密码邮件过期时间
	ResetPasswordCode string    `gorm:"column:reset_password_code;type:varchar(255)" json:"reset_password_code"` // 重置密码验证随机码
	RememberToken     string    `gorm:"column:remember_token;type:varchar(100)" json:"remember_token"`
	LastLoginTime     time.Time `gorm:"column:last_login_time;type:timestamp" json:"last_login_time"`         // 最后一次登录时间
	Source            int8      `gorm:"column:source;type:tinyint(4);not null" json:"source"`                 // 注册来源 1-来自pc 2-来自手机
	IsEmployee        int8      `gorm:"column:is_employee;type:tinyint(4);not null" json:"is_employee"`       // 0 普通用户（自由注册）， 1 员工， 2 老板 3 普通用户（通过分享注册）通过分享注册的用户状态为1
	ShareNum          string    `gorm:"column:share_num;type:varchar(20)" json:"share_num"`                   // //用户分享码
	ShareUId          int       `gorm:"column:share_uid;type:int(11);not null" json:"share_uid"`              // 邀请当前用户id
	IsShareMoney      int8      `gorm:"column:is_share_money;type:tinyint(4);not null" json:"is_share_money"` // 是否已经给分享人打款
	ShareMoney        float64   `gorm:"column:share_money;type:decimal(8,2);not null" json:"share_money"`     // 分享获得的金额
	WechatOpenid      string    `gorm:"column:wechat_openid;type:varchar(200)" json:"wechat_openid"`          // 第三方登陆 微信授权openid
	UnionID           string    `gorm:"column:union_id;type:varchar(200)" json:"union_id"`                    // 开放平台与公众平台 UnionID
	IsSubscribe       int8      `gorm:"column:is_subscribe;type:tinyint(4);not null" json:"is_subscribe"`     // 是否关注 1是 0否
	IsMovie           bool      `gorm:"column:is_movie;type:tinyint(1);not null" json:"is_movie"`             // 是否在直播1是,0否
	SugarGift         int8      `gorm:"column:sugar_gift;type:tinyint(4);not null" json:"sugar_gift"`         // 是否发放礼品 1是 0否
	CreatedAt         time.Time `gorm:"column:created_at;type:timestamp" json:"created_at"`                   // 创建时间
	UpdatedAt         time.Time `gorm:"column:updated_at;type:timestamp" json:"updated_at"`                   // 更新时间
	ImUserType        int8      `gorm:"column:im_user_type;type:tinyint(4)" json:"im_user_type"`              // 用户类型:1=普通用户,2=客服
}
